home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / comm / mail / Mutt089src.lha / Mutt-0.89i-AMIGA / src / keymap.h < prev    next >
C/C++ Source or Header  |  1998-01-28  |  3KB  |  97 lines

  1. /*
  2.  * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
  3.  * 
  4.  *     This program is free software; you can redistribute it and/or modify
  5.  *     it under the terms of the GNU General Public License as published by
  6.  *     the Free Software Foundation; either version 2 of the License, or
  7.  *     (at your option) any later version.
  8.  * 
  9.  *     This program is distributed in the hope that it will be useful,
  10.  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *     GNU General Public License for more details.
  13.  * 
  14.  *     You should have received a copy of the GNU General Public License
  15.  *     along with this program; if not, write to the Free Software
  16.  *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  */ 
  18.  
  19. #ifndef KEYMAP_H
  20. #define KEYMAP_H
  21.  
  22. /* maximal length of a key binding sequence used for buffer in km_bindkey */
  23. #define MAX_SEQ 8
  24.  
  25. /* type for key storage, the rest of mutt works fine with int type */
  26. typedef short keycode_t;
  27.  
  28. void km_bindkey (char *, int, int, char *);
  29. int km_dokey (int);
  30.  
  31. /* entry in the keymap tree */
  32. struct keymap_t
  33. {
  34.   char *macro;           /* macro expansion (op == OP_MACRO) */
  35.   struct keymap_t *next; /* next key in map */
  36.   short op;              /* operation to perform */
  37.   short eq;              /* number of leading keys equal to next entry */
  38.   short len;             /* length of key sequence (unit: sizeof (keycode_t)) */
  39.   keycode_t *keys;       /* key sequence */
  40. };
  41.  
  42. char *km_keyname (int);
  43. int km_expand_key (char *, size_t, struct keymap_t *);
  44. struct keymap_t *km_find_func (int, int);
  45. void km_init (void);
  46. void km_error_key (int);
  47.  
  48. enum
  49. {
  50.   MENU_ALIAS,
  51.   MENU_ATTACH,
  52.   MENU_COMPOSE,
  53.   MENU_EDITOR,
  54.   MENU_FOLDER,
  55.   MENU_GENERIC,
  56.   MENU_MAIN,
  57.   MENU_PAGER,
  58.   MENU_POST,
  59.  
  60. #ifdef _PGPPATH
  61.   MENU_PGP,
  62. #endif
  63.  
  64.   MENU_MAX
  65. };
  66.  
  67. struct binding_t
  68. {
  69.   char *name;    /* name of the function */
  70.   short op;    /* function id number */
  71.   char *seq;    /* default key binding */
  72. };
  73.  
  74. /* the keymap trees (one for each menu) */
  75. extern struct keymap_t *Keymaps[];
  76.  
  77. /* dokey() records the last real key pressed  */
  78. extern int LastKey;
  79.  
  80. extern struct binding_t OpGeneric[];
  81. extern struct binding_t OpPost[];
  82. extern struct binding_t OpMain[];
  83. extern struct binding_t OpAttach[];
  84. extern struct binding_t OpPager[];
  85. extern struct binding_t OpCompose[];
  86. extern struct binding_t OpBrowser[];
  87. extern struct binding_t OpEditor[];
  88. extern struct binding_t OpAlias[];
  89.  
  90. #ifdef _PGPPATH
  91. extern struct binding_t OpPgp[];
  92. #endif /* _PGPPATH */
  93.  
  94. #include "keymap_defs.h"
  95.  
  96. #endif /* KEYMAP_H */
  97.